Gerrit

您所在的位置:网站首页 gerrit 数据库 Gerrit

Gerrit

2024-03-11 14:31| 来源: 网络整理| 查看: 265

简介

Gerrit 是一款code review 开源软件,在集群化的大趋势下,master 与 slave 之间的同步工作,就是根据 Gerrit 的插件 replication.jar 完成的。 ​ /gerrit-site/etc/replication.config 是一个 Git 风格的配置文件,它控制着 replication 插件运行的方式。

​ 文件内容由一个或多个 remote 部分组成,每个remote 又包含一个或多个目标URL的常规配置。

​ 在进行 replication 操作是,每个 remote 使用各自独立的线程池,这样设计的获益良多,灵活度高。例如用户可以根据不同的网络连接类型,将URL集合归类,LAN 和 Public Internet 可以分开放在不同的remote里。

配置参数举例

列举几个配置项

gerrit.sshCommandTimeout: 执行命令的超时设置。默认值为0,没有超时限制。

gerrit.sshConnectionTimeout :ssh 连接的超时时间,默认值为 2 分钟。设置 0 则没有超时限制。

remote.NAME.receivepack : 默认值 ‘git-reveive-pack’

remote.NAME.uploadpack : 默认值 ‘git-upload-pack’

remote.NAME.push:表示要同步的,设置为 +refs/heads/:refs/heads/ * 将会同步active的分支代码,而不是refs/changes/下的 change 或 refs/tags/下的 tag

remote.NAME.timeout:远端无响应后最大等待时长;默认为0,无限期等待

remote.NAME.replicationDelay :gerrit 特有设置,等待多长时间后开始进行远端push,0表示立即开始,默认是15秒

启动前准备

开启前确保~/.ssh/known_host中有remote机器的key,

如果仅运行一次replication,则最快捷的添加 host key的方法:

sudo su -c 'ssh mirror1.us.some.org echo' gerrit2

注意:本地的用户 ssh key设置生成的格式是PEM,方法:

ssh-keygen -m PEM -t rsa -C "[email protected]" replication 配置格式 [remote "host-one"] url = [email protected]:/some/path/${name}.git [remote "pubmirror"] url = mirror1.us.some.org:/pub/git/${name}.git url = mirror2.us.some.org:/pub/git/${name}.git url = mirror3.us.some.org:/pub/git/${name}.git push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/* threads = 3 authGroup = Public Mirror Group authGroup = Second Public Mirror Group replication 配置热加载 ssh -p 29418 gerrit@localhost gerrit plugin reload replication replication 手动触发方式 ssh -p @SSH_PORT@ @SSH_HOST@ @PLUGIN@ start [--now] [--wait] {--url | [--url ] --all | [--url ] ...}

–now : Start replicating right away without waiting the per remote replication delay.

–wait : Wait for replication to finish before exiting.

–all : Schedule replication for all projects.

–url : 包含 PATTEN 的 URL 节点. 适用于给某个特定的节点进行备份,例如新增的节点。

#同步所有 project $ ssh -p @SSH_PORT@ @SSH_HOST@ @PLUGIN@ start --all # 只同步到 srv02 $ ssh -p @SSH_PORT@ @SSH_HOST@ @PLUGIN@ start --url srv2 --all # 同步到 slave1 上名称包含 vendor 的文件夹 $ ssh -p @SSH_PORT@ @SSH_HOST@ @PLUGIN@ start --url slave1 ^(|.*/)vendor(|/.*) # 同步到一个指定的目标 URL $ ssh -p @SSH_PORT@ @SSH_HOST@ @PLUGIN@ start --url https://example.com/tools/gerrit.git

​ 线上实际操作举例

$ ssh -p 29418 gerrit@localhost replication start --url upgrade --all # 查看备份log,确认 remote 为 upgrade 的 5 台机器是否开始全量同步 replication.config 示例 [remote "slave01"] adminUrl = ssh://create-idc04/home/work/hdd1/git/code/miui/${name}.git adminUrl = ssh://create-idc07/home/work/gerrit/repositories/miui/${name}.git adminUrl = ssh://create-idc08/home/work/repositories/miui/${name}.git url = git://10.172.xx.xx/miui/${name}.git url = git://10.142.xx.xx/miui/${name}.git url = git://10.142.xx.xx/miui/${name}.git push = +refs/*:refs/* threads = 12 mirror = true timeout = 50 replicationDelay = 2 [remote "slave02"] adminUrl = ssh://create-nanjing103/home/work/git/code/miui/${name}.git adminUrl = ssh://create-nanjing113/home/work/git/code/miui/${name}.git url = git://10.234.xx.xx/miui/${name}.git url = git://10.234.xx.xx/miui/${name}.git push = +refs/*:refs/* timeout = 50 threads = 8 mirror = true replicationDelay = 2


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3